//package jp.sourceforge.talisman.mds;
//
///*
// * $Id: TableTest.java,v 1.1 2009/09/12 05:06:20 weiwei Exp $
// */
//
//import java.util.HashSet;
//import java.util.Iterator;
//import java.util.NoSuchElementException;
//import java.util.Set;
//
//import org.junit.Assert;
//import org.junit.Before;
//import org.junit.Test;
//
///**
// * 
// * @author Haruaki Tamada
// * @version $Revision: 1.1 $ 
// */
//public class TableTest{
//    private Table<String> table;
//
//    @Before
//    public void setUp(){
//        table = new Table<String>();
//        table.addValue("Top", "Right",  5/4d);
//        table.addValue("Top", "Left",   5/4d);
//        table.addValue("Top", "Bottom", 1d);
//
//        table.addValue("Right", "Left",    4d);
//        table.addValue("Right", "Bottom",  5/4d);
//
//        table.addValue("Left", "Bottom",  5/4d);
//    }
//
//    @Test
//    public void testToString(){
//        String string = table.toString();
//
//        String crlf = System.getProperty("line.separator");
//        Assert.assertEquals(
//            String.format(", Top, Right, Left, Bottom%sTop%sRight, 1.25%sLeft, 1.25, 4.0%sBottom, 1.0, 1.25, 1.25", crlf, crlf, crlf, crlf), 
//            string
//        );
//    }
//
//    @Test
//    public void testSize(){
//        Assert.assertEquals(3, table.getRowCount());
//
//        Assert.assertEquals(3, table.getColumnCount("Top"));
//        Assert.assertEquals(2, table.getColumnCount("Right"));
//        Assert.assertEquals(1, table.getColumnCount("Left"));
//        Assert.assertEquals(0, table.getColumnCount("Bottom"));
//
//        Assert.assertEquals(3, table.getMaxColumnCount());
//    }
//
//    @Test(expected=NoSuchElementException.class)
//    public void testIterator(){
//        Iterator<Table.Entry<String>> iterator = table.iterator();
//
//        Assert.assertTrue(iterator.hasNext());
//        Table.Entry<String> entry = iterator.next(); 
//        Assert.assertEquals(entry.getX(), "Top");
//        Assert.assertEquals(entry.getY(), "Right");
//        Assert.assertEquals(entry.getValue(), 5/4d);
//        Assert.assertTrue(iterator.hasNext());
//        entry = iterator.next(); 
//        Assert.assertEquals(entry.getX(), "Top");
//        Assert.assertEquals(entry.getY(), "Left");
//        Assert.assertEquals(entry.getValue(), 5/4d);
//        Assert.assertTrue(iterator.hasNext());
//        entry = iterator.next(); 
//        Assert.assertEquals(entry.getX(), "Top");
//        Assert.assertEquals(entry.getY(), "Bottom");
//        Assert.assertEquals(entry.getValue(), 1d);
//        Assert.assertTrue(iterator.hasNext());
//        entry = iterator.next(); 
//        Assert.assertEquals(entry.getX(), "Right");
//        Assert.assertEquals(entry.getY(), "Left");
//        Assert.assertEquals(entry.getValue(), 4d);
//        Assert.assertTrue(iterator.hasNext());
//        entry = iterator.next(); 
//        Assert.assertEquals(entry.getX(), "Right");
//        Assert.assertEquals(entry.getY(), "Bottom");
//        Assert.assertEquals(entry.getValue(), 5/4d);
//        Assert.assertTrue(iterator.hasNext());
//        entry = iterator.next(); 
//        Assert.assertEquals(entry.getX(), "Left");
//        Assert.assertEquals(entry.getY(), "Bottom");
//        Assert.assertEquals(entry.getValue(), 5/4d);
//        Assert.assertFalse(iterator.hasNext());
//        iterator.next();
//    }
//
//    @Test(expected=UnsupportedOperationException.class)
//    public void testIteratorRemove(){
//        Iterator<Table.Entry<String>> iterator = table.iterator();
//        // following method will throw UnsupportedOperationException
//        iterator.remove();
//    }
//
//    @Test
//    public void testRemoveColumn(){
//        table.removeColumn("Left");
//        Assert.assertEquals(3, table.getRowCount());
//
//        Assert.assertEquals(2, table.getColumnCount("Top"));
//        Assert.assertEquals(1, table.getColumnCount("Right"));
//        Assert.assertEquals(1, table.getColumnCount("Left"));
//        Assert.assertEquals(0, table.getColumnCount("Bottom"));
//
//        Assert.assertEquals(2, table.getMaxColumnCount());
//    }
//
//    @Test
//    public void testRemoveRow(){
//        table.removeRow("Right");
//        Assert.assertEquals(2, table.getRowCount());
//
//        Assert.assertEquals(3, table.getColumnCount("Top"));
//        Assert.assertEquals(0, table.getColumnCount("Right"));
//        Assert.assertEquals(1, table.getColumnCount("Left"));
//        Assert.assertEquals(0, table.getColumnCount("Bottom"));
//
//        Assert.assertEquals(3, table.getMaxColumnCount());
//    }
//
//    @Test
//    public void testRemove1(){
//        table.removeValue("Top", "Right");
//        table.removeValue("Top", "Left");
//        table.removeValue("Top", "Bottom");
//
//        Assert.assertEquals(3, table.getKeySize());
//        Set<String> set = new HashSet<String>();
//        set.add("Right");
//        set.add("Left");
//        set.add("Bottom");
//
//        String[] names = table.getKeys(new String[table.getKeySize()]);
//        for(int i = 0; i < names.length; i++){
//            Assert.assertTrue(set.contains(names[i]));
//            set.remove(names[i]);
//        }
//        Assert.assertEquals(0, set.size());
//    }
//
//    @Test
//    public void testRemove2(){
//        table.removeValue("Right", "Top");
//        table.removeValue("Top", "Left");
//        table.removeValue("Top", "Bottom");
//
//        Set<String> set = new HashSet<String>();
//        set.add("Right");
//        set.add("Left");
//        set.add("Bottom");
//
//        String[] names = table.getKeys(new String[0]);
//        Assert.assertEquals(3, table.getKeySize());
//        for(int i = 0; i < names.length; i++){
//            Assert.assertTrue(set.contains(names[i]));
//            set.remove(names[i]);
//        }
//        Assert.assertEquals(0, set.size());
//    }
//
//    @Test(expected=UnsupportedOperationException.class)
//    public void testKeySet(){
//        Set<String> nameset = table.getKeySet();
//
//        Set<String> set = new HashSet<String>();
//        set.add("Top");
//        set.add("Right");
//        set.add("Left");
//        set.add("Bottom");
//        
//        for(String name: nameset){
//            Assert.assertTrue(set.contains(name));
//            set.remove(name);
//        }
//        Assert.assertEquals(0, set.size());
//
//        nameset.add("This method will throw the UnsupportedOperationException");
//    }
//
//    @Test
//    public void testRegisteredValue(){
//        Assert.assertEquals(5/4d, table.getValue("Top", "Right").doubleValue(), 1E-6);
//        Assert.assertEquals(5/4d, table.getValue("Top", "Left").doubleValue(), 1E-6);
//        Assert.assertEquals(1d, table.getValue("Top", "Bottom").doubleValue(), 1E-6);
//
//        Assert.assertEquals(4d, table.getValue("Right", "Left").doubleValue(), 1E-6);
//        Assert.assertEquals(5/4d, table.getValue("Right", "Bottom").doubleValue(), 1E-6);
//        Assert.assertEquals(5/4d, table.getValue("Bottom", "Left").doubleValue(), 1E-6);
//    }
//
//    @Test
//    public void testUnregisteredValue(){
//        Assert.assertNull(table.getValue("Top", "Top"));
//        Assert.assertNull(table.getValue("aaa", "bbb"));
//    }
//
//    @Test
//    public void testBasic(){
//        Assert.assertEquals(4, table.getKeySize());
//
//        Set<String> set = new HashSet<String>();
//        set.add("Top");
//        set.add("Right");
//        set.add("Left");
//        set.add("Bottom");
//
//        String[] names = table.getKeys(new String[table.getKeySize()]);
//        for(int i = 0; i < names.length; i++){
//            Assert.assertTrue(set.contains(names[i]));
//            set.remove(names[i]);
//        }
//        Assert.assertEquals(0, set.size());
//    }
//
//    @Test
//    public void testValidation(){
//        Assert.assertTrue(table.isValid());
//
//        table.removeValue("Top", "Right");
//
//        Assert.assertFalse(table.isValid());
//    }
//}
